package practice;

/**
 * 扫描指定⽬录，并找到名称或者内容中包含指定字符的所有普通⽂件（不包含⽬录）
 */

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

/**
 * 1.请用户输入一个目录路径
 * 2.检验目录是否存在，且是一个目录
 * 3.请用户输入一个文件名称
 * 4.检验名称是否合法
 * 5.查找该目录下的包含该字符的文件名称
 * 6.如果是目录继续打开，是文件的话就对比名字，符合条件打印出来
 */
public class DEMO_03 {
    public static void main(String[] args) throws IOException {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个目录路径");
        String path = scanner.nextLine();
        File file=new File(path);
        if(!file.exists()){
            System.out.println("该路径不存在");
            return;

        }
        if(!file.isDirectory()){
            System.out.println("不是一个目录路径");
            return;
        }
        System.out.println("请输入你要搜索的文件名称");
        String name = scanner.nextLine();
        if(name.isEmpty()||name.isBlank()){
            System.out.println("输入的名称不合法");
            return;
        }
        findFile(name,
                file);

    }
    public static void findFile(String name,File file) throws IOException {
        File[] files = file.listFiles();
        if (files.length==0){
            return;

        }else{
            for (int i = 0; i < files.length; i++) {
                if(files[i].isFile()){
                    if(files[i].getName().contains(name)){
                        System.out.println(files[i].getCanonicalFile());
                    }
                }else{
                    findFile(name,files[i]);
                }
            }
        }
    }
}
